/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package raccoon.suvisa.logica.servicios.manejador.entidades.fi;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import javax.ejb.Remote;

/**
 *
 * @author Gabriel
 */
@Remote
public interface BancoRemote {

    //Manejo de Entidad
    public boolean logearse(String usuario, String password);

    public boolean salirdelSistema();

    //Manejo de Usuarios
    public BigDecimal registrarUsuario(
            String nombre,
            String apellido,
            String email,
            String username,
            String password,
            String tipo_identificacion,
            BigInteger numero_identificacion,
            String direccion,
            String telefono,
            BigInteger id_entidad,
            String rol,
            char activo);

    public boolean modificarUsuario(BigDecimal id_usuario,
            String nombre,
            String apellido,
            String email,
            String username,
            String password,
            String tipo_identificacion,
            BigInteger numero_identificacion,
            String direccion,
            String telefono,
            BigInteger id_entidad,
            String rol,
            char activo);

    public boolean eliminarUsuario(BigDecimal id_usuario);

    public boolean registrarTarjetahabiente (            
            String numeroidentificacion,
            String nombre,
            String apellido,
            String telefono,
            String direccion,
            Double cupoaprobado,
            Double ingresosmensuales,
            char aprobado,
            char activo,
            BigInteger id_entidad,
            String email
            );

    public boolean modificarTarjetahabiente (
            String numeroidentificacion,
            String nombre,
            String apellido,
            String telefono,
            String direccion,
            Double cupoaprobado,
            Double ingresosmensuales,
            char aprobado,
            char activo,
            String email
            );

    public boolean eliminarTarjetahabiente (String numeroidentificacion);
    public boolean bloquearTarjetahabiente (String numeroidentificacion);

    //Manejo de tarjetas
    public BigDecimal solicitarTarjetaCredito(
            BigDecimal numeroTarjeta,
            String idTipoTarjeta,
            BigDecimal idCuenta,
            char activa,
            Double saldo,
            String paisexpedicion,
            Date fechaVencimiento,
            BigDecimal idEntidad);

    public BigDecimal crearCuenta(BigDecimal idUsuario, char tipocuenta);
    public BigDecimal crearCuentaTH(String numerodeIdentifiacion, char tipocuenta);

    public boolean bloquearTarjeta(BigDecimal numero_tarjeta);

    public boolean desbloquearTarjeta(BigDecimal numero_tarjeta);

    public Double consultarSaldo(BigDecimal idTarjeta);

    public boolean modificarSaldo(BigDecimal idTarjeta, float valordelmonto);

    //Manejo de Reportes
    public void generarReporte();

    public void hacerBusqueda();

    //Administrar Sucursales
    public BigDecimal registrarSucursal(BigInteger nit, String nombre_entidad, char sucursal, char cajero);

    public boolean eliminarSucursal(BigDecimal id_entidad);

    //Administrar Cajeros Automáticos
    public BigDecimal registrarCajero(BigInteger nit, String nombreEntidad, char activo, char cajero, char sucursal, char entidadcomercial, char entidadservpublicos, char banco, char cajacompensasion, char financiamientocomercial);

    public boolean eliminarCajero(BigDecimal id_entidad);

    public boolean deshacerTransaccion(BigDecimal id_transaccion);

    public BigDecimal registrarPago(BigDecimal idTarjeta, Double monto, BigInteger cuotas, BigInteger cuentaDe);
}
